Session Initiation Protocol (SIP) is an application-layer control (i.e., signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions may support the transport of traffic, such as Internet-based telephone calls, multimedia distribution, multimedia conferences, instant messaging conferences, interactive voice response (IVR), automated and manual operator services, automatic call distribution, call routing, etc. SIP invitations messages or INVITEs may be used to create sessions and may carry session descriptions that allow participants to agree on a set of compatible media types. SIP may use SIP-based devices (e.g., proxy servers) to help route requests to a specified user's current location, authenticate and authorize users for services, implement provider-specified call-routing policies, and/or provide other features to users.
A SIP-based device may experience overload conditions when it has insufficient resources to keep up with a volume of traffic it is being asked to process (e.g., due to a lack of SIP signaling resources). Resources may include components of the SIP-based device used to process traffic, such as a central processing unit (CPU), memory, input/output, a disk, etc., as well as external resources, such as databases, domain name service (DNS) servers, etc.
SIP provides only a basic mechanism for automatically reducing traffic and performing overload control, through its “503” (Service Unavailable) response code. However, this mechanism fails to prevent overload of a SIP-based device, and fails to prevent a collapse in functionality due to congestion. Use of the “503” (Service Unavailable) mechanism may even cause problematic traffic load to oscillate and to shift between SIP-based devices, and thereby worsen an overload condition. The Internet Engineering Task Force (IETF) is currently studying new overload control mechanisms for the SIP protocol, but has not specified explicit mechanisms.